`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company: 
// Engineer: 
// 
// Create Date:    00:27:17 09/21/2012 
// Design Name: 
// Module Name:    RAM 
// Project Name: 
// Target Devices: 
// Tool versions: 
// Description: 
//
// Dependencies: 
//
// Revision: 
// Revision 0.01 - File Created
// Additional Comments: 
//
//////////////////////////////////////////////////////////////////////////////////
module RAM(Direccion_i,Write_Enable_i,Output_Enable_i,Datos_Entrada_i,Datos_Salida_o);
    
	 //ENTRADAS
	 //Bus de Direcciones
	 input [3:0] Direccion_i;
	 //Bus de Control
	 input Write_Enable_i, Output_Enable_i;
	 //Bus de Datos de Entrada
	 input [7:0] Datos_Entrada_i;
	 
	 //SALIDAS
	 ////Bus de Datos Salida
	 output reg [7:0] Datos_Salida_o;
	 
	 //Posiciones de la RAM
	 reg [7:0] Memoria[0:15];
	 
	 always @(Write_Enable_i or Output_Enable_i)
			begin
				if(Write_Enable_i)
					begin
						Memoria[Direccion_i] <= Datos_Entrada_i;
					end
				else if(Output_Enable_i)
					begin
						Datos_Salida_o <= Memoria[Direccion_i];
					end	
			end
endmodule
